//package com.efounder.frame.xmlparse;
//
//import com.core.xml.StubObject;
//
//import org.w3c.dom.Document;
//import org.w3c.dom.Element;
//import org.w3c.dom.NamedNodeMap;
//import org.w3c.dom.Node;
//import org.w3c.dom.NodeList;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import javax.xml.parsers.DocumentBuilder;
//import javax.xml.parsers.DocumentBuilderFactory;
//import javax.xml.parsers.ParserConfigurationException;
//
///**
// * Created by XinQing on 2016/8/29.
// */
//
//public class EFXmlParser_old {
//
//    public static EFXmlParser_old xmlParser;
//    private static DocumentBuilder documentBuilder;
//
//    private EFXmlParser_old() {
//        super();
//    }
//
//    public static EFXmlParser_old getInstance() {
//        if (xmlParser == null) {
//            xmlParser = new EFXmlParser_old();
//            //首先得到：得到 DOM 解析器的工厂实例
//            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//            try {
//                documentBuilder = documentBuilderFactory.newDocumentBuilder();
//            } catch (ParserConfigurationException e) {
//                e.printStackTrace();
//            }
//        }
//        return xmlParser;
//    }
//
//    /**
//     * @param xmlPath
//     * @return
//     */
//    public Map<String, List<StubObject>> parseXml(String xmlPath) {
//        File xmlFile = new File(xmlPath);
//        if (xmlFile.exists()) {
//            try {
//                Document document = documentBuilder.parse(new FileInputStream(xmlFile));
//                Element rootElement = document.getDocumentElement();
//                Map<String, List<StubObject>> map = new HashMap<>();
//                recurParseElement(rootElement, map);
//
//                return map;
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//
//        return null;
//    }
//
//    /***
//     * 递归解析xml元素
//     *
//     * @param element
//     * @param map
//     */
//    private void recurParseElement(Element element, Map<String, List<StubObject>> map) {
//        //1.获取元素名,作为map的key
//        String elementName = element.getNodeName();
//        //2.获取子元素列表，放入list
//        NodeList childNodeList = element.getChildNodes();
//        List<StubObject> stubList = new ArrayList<>();
//        for (int i = 0; i < childNodeList.getLength(); i++) {
//            Node childNode = childNodeList.item(i);
//            short nodeType = childNode.getNodeType();
//            if (nodeType == Node.ELEMENT_NODE) {
//                //3.获取子元素属性，放入stub中
//                StubObject stub = new StubObject();
//                NamedNodeMap attrs = childNode.getAttributes();
//                for (int j=0; j<attrs.getLength(); j++){
//                    Node attr = attrs.item(j);
//                    stub.setString(attr.getNodeName(),attr.getNodeValue());
//                }
//                //放入list
//                stubList.add(stub);
//                //开始递归
//                if (childNode.hasChildNodes())
//                    recurParseElement((Element) childNode,map);
//            }
//        }
//        //放入map
//        map.put(elementName,stubList);
//    }
//
//
//}
